package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.system.SysScenic;
import com.ruoyi.common.core.domain.model.OperationTimeAndSwitchModeBody;
import com.ruoyi.common.exception.job.TaskException;
import org.quartz.SchedulerException;

/**
 * 景区信息Service接口
 *
 * @author ruoyi
 * @date 2023-05-04
 */
public interface ISysScenicService {
    /**
     * 查询景区信息
     *
     * @param scenicId 景区信息主键
     * @return 景区信息
     */
    SysScenic selectSysScenicByScenicId(Long scenicId);

    /**
     * 查询景区信息列表
     *
     * @param sysScenic 景区信息
     * @return 景区信息集合
     */
    List<SysScenic> selectSysScenicList(SysScenic sysScenic);

    List<TreeSelect> selectSysScenicTreeList(SysScenic sysScenic);

    List<TreeSelect> buildScenicTreeSelect(List<SysScenic> depts);

    List<SysScenic> buildScenicTree(List<SysScenic> scenics);

    String checkScenicNameUnique(SysScenic scenic);

    /**
     * 新增景区信息
     *
     * @param sysScenic 景区信息
     * @return 结果
     */
    int insertSysScenic(SysScenic sysScenic);

    /**
     * 修改景区信息
     *
     * @param sysScenic 景区信息
     * @return 结果
     */
    int updateSysScenic(SysScenic sysScenic);

    /**
     * 批量删除景区信息
     *
     * @param scenicIds 需要删除的景区信息主键集合
     * @return 结果
     */
    int deleteSysScenicByScenicIds(Long[] scenicIds);

    /**
     * 删除景区信息信息
     *
     * @param scenicId 景区信息主键
     * @return 结果
     */
    int deleteSysScenicByScenicId(Long scenicId);

    /**
     * 检查某景区是否存在子景区
     *
     * @param scenicId 景区ID
     * @return 结果
     */
    boolean hasChildByScenicId(Long scenicId);

    void updateOperationTimeAndSwitchMode(OperationTimeAndSwitchModeBody dataBody) throws SchedulerException, TaskException;

    /**
     * 修改景区的运营状态。
     *
     * @param
     * @return
     * @author ZJW
     * @createTime 2023/7/12 23:26
     */
    void changeOperationStatus(Long scenicId, String operationStatus);
}
